Olá, Thorick.
Primeiramente seja bem-vindo ao xtibia.com.
Crie um arquivo em data/logs, chamado promotion21122012.log, este será o arquivo responsável por armazenar os IPs que já receberam prêmios.
Em data/actions/scripts, crie um arquivo chamado chest21122012.lua, colando o código abaixo:
local REWARDS = {
{2160, 100}
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
local file = io.open(getLogsDir() .."/promotion21122012.log", "a+")
local text = file:read("*a")
if text:find(getPlayerIp(cid)) then
return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is empty.")
end
for n = 1, #REWARDS do
local tmp = doCreateItemEx(REWARDS[n][1], REWARDS[n][2])
doPlayerAddItemEx(cid, tmp, true)
end
file:write(getPlayerIp(cid) .."\n")
file:close()
return true
end
Em data/actions/actions.xml, adicione a seguinte linha:
<action uniqueid="10000" event="script" value="promotion21122012.lua"/>
Obs: Você pode mudar o número 10000 para a uniqueid do baú.
Antes de:
</actions>
Em data/npc/scripts, crie um arquivo chamado npcisland.lua, colando o código abaixo:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
local guild_name = "Exemplo"
local to_position = {x = 100, y = 100, z = 7}
function callbackOnCreatureSay(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if msgcontains(msg, "island") then
if getPlayerGuildName(cid) == guild_name then
doTeleportThing(cid, to_position)
else
selfSay("Sorry, only members of the guild ".. guild_name .." can teleport to the {island}.", cid)
end
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, callbackOnCreatureSay)
npcHandler:setMessage(MESSAGE_GREET, "Hello, |PLAYERNAME|. Do you want to go to {island}.")
npcHandler:addModule(FocusModule:new())
Basta fazer um NPC que use o script acima.
Você pode mudar o nome da guild permitida aqui:
local guild_name = "Exemplo"
Abraços.






info
Grupo: Campones
Registrado: 21/12/12
Posts: 5
Reputação: 0
Char no Tibia: Alex Sane
Olá Scripters, gostaria de pedir à vocês umas scripts que pareciam ser simples, mas estou quebrando a cabeça para consegui-las.
1ª. Estou tentando fazer uma promoção aonde quem trouxer o seu time para o meu servidor, ganhe um item X. Mas para evitar fraude e afins por parte dos players, gostaria de fazer um baú aonde o prêmio só possa ser pegue apenas 1x por IP.
2ª. Além desse baú, gostaria de fazer um npc, que teletransportasse um player Y para a coordenada X , Y , Z. Porém, gostaria que esse NPC enviasse apenas pessoas que estejam fazendo parte de uma guild Z. (Definida por mim).
Obrigado a todos que tentarem.